﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace CarCrash.Application.Drawing.entities
{
    // супер класс для всех рисуемых объектов
    public abstract class DrawableEntity
    {

        public int BeginX { get; set; }
        public int BeginY { get; set; }
        public int EndX { get; set; }
        public int EndY { get; set; }
        public float Angle { get; set; }

        // так же здесь необходимо свойство положения по оси z
        // то есть нулевой уровень - покрытие (дорога)
        // второй уровень - какие то объекты системы(кусты)
        // третий уровень - авто
        // таким образом мы имеем инфу о том, как накладывать друг на друга объекты
        // кусты скрывают дорогу, а машина скрывает все

        public abstract void Paint(Graphics graphics);

        // возвращает форму для настройки этого элемента
        public abstract Form GetForm();

        // получаю координаты начала и конца удовлетворящие условию
        // begin(x, y) < end(x, y)
        public int CorrectBeginX
        {
            get { return BeginX > EndX ? EndX : BeginX; }
        }

        public int CorrectBeginY
        {
            get { return BeginY > EndY ? EndY : BeginY; }
        }

        public int CorrectEndX
        {
            get { return BeginX > EndX ? BeginX : EndX; }
        }
    
        public int CorrectEndY
        {
            get { return BeginY > EndY ? BeginY : EndY; }
        }

    }
}